ブロックチェーン技術概論 理論と実践
1. ブロックチェーン技術の原点
サトシ・ナカモト論文
信頼できる
2. ブロックチェーンの概要
3. スマートコントラクトと分散台帳
スマートコントラクトについて
新しい契約の仕組みであり、当事者が約束を履行するためのプロトコル
法的な過程をアルゴリズムが行う
英米法の契約は当事者間のプライベートな約束、これでルールを構築するのが良いことも
ビットコインでは実装に問題があるので、イーサリアム
イーサリアムではEVMと呼ばれる仮想コンピュータ上で処理されるプログラム一般をスマコンと呼ぶ
スケーラビリティ、標準化、機能の完備性、開発の容易さ、使いやすさを兼ね備えたコンセンサスベースのアプリを開発できるように
チューリング完全なプログラミング言語がビルトインされたブロックチェーンで、誰でもDAppを作れる
チューリング完全、バリューアウェアネス、ブロックチェーンアウェアネス、ステートフル
契約を状態マシンと見立てるところからスタート
オラクルが重要に、というのも履行のきっかけづくりに外界からの刺激が欲しい
4つの基本原則が大事
1. 観測可能性
2. 客観的検証可能性
3. 契約当事者関係
4. 強制力
ビットコインは外の世界に閉じている
イーサでも人間の存在とトラストのアーキテクチャが不可欠
今はGAFAのサービスがコード = 法
The DAO事件:イーサのスマコンのバグが悪用された、ハードフォーク
政府によるスマコンはサトシナカモトのブロックチェーンとは対極、オラクルに対するトラスト構造の理解が必要
分散台帳について
ブロックチェーンはすべての参加者の資産が管理させる共有台帳ですが、それぞれの人はワレットと呼ばれるアプリを通じてブロックチェーンを参照する
資産を譲渡する方法は暗号鍵を使ったデジタル署名
暗号資産とは暗号技術によるデジタルデータで、貨幣的な価値評価が可能な、将来収益をもたらすことが期待される経済的価値
Exchange token:ビットコインやライトコインのこと
Security token:特定投資
Utility token:分散台帳プラットフォームを使用して、提供される製品やサービスにアクセスするための引換券
Investment token:何らかの権利を規定する
4. ブロックチェーンを構成する暗号技術の基礎
5. ビットコインのシステム構成と仕組み
Bitcoin Core
サトシ・ナカモトが開発を主導したBitcoinクライアントで、ビットコインの参照実装
bitcoindというデーモンとして動作
GUIフロントエンドとして、bitcoin-qt
コマンドベースのフロントエンドとして、bitcoin-cli
ビットコインノード
ビットコインを利用し運用するためのソフトウェア
フルノードとSPVノードがある
フルノード:全てのトランザクションの管理
IBD(Initial Block Download):最初にブロックチェーンの全データをローカルなストレージにダウンロードする作業
フルノードはIBD完了後、トランザクションとブロックに対する検証者としての役割を演じ始める
新たにIBDを開始したフルノードに対しては、ブロックチェーンのデータを提供する側
SPVノード
検証者の役割を持たずに、ビットコインの送受の機能だけしかもたないノード
スマホのビットコインアプリが例
検証を行わないので、自分でデータを保持する必要がない
IBDも大きなストレージも不要
フルノードを利用することでトランザクションの検証を行う
ビットコインネットワーク
ビットコインネットワーク
ビットコインノードが相互に接続されたネットワーク
全てのノードがサーバにもクライアントにもなるP2P型システム
仮想通貨としてビットコインが還流する経済圏でもあり、トランザクションやブロックがブロードキャストされて到達する範囲でもある
1つのビットコインネットワークは1つのブロックチェーンを共有している
mainnet, testnet, signetという異なるビットコインネットワークがある
Bitcoin Coreはビットコインネットワークに接続せずに単独で動かすことも可能、ローカルに作成した自分だけのビットコインネットワークも、これをregtestモード
mainnet
mainnetのビットコインのみが本当の市場価値を持つ仮想通貨としてのビットコイン
TCPの8333ポートで接続されている
フルノードの数は10000以上
testnet
ビットコインの研究開発用のネットワークで、ここで流通しているビットコインには市場価値がない
testnetのコインを使えばリスクなしに新しい技術やシステムの開発や実験を行える
TCP18333ポート
signet
testnetの信頼性や安定性の低下の問題を解決するために新しく作られた研究開発用のネットワーク
testnetはマイニングマシンのテストなどで他の研究開発に配慮することなく、ネットワークを乱用する人がいるため、マイニング間隔が不安定であり、大規模なブロックチェーンの再編成が頻発するなどの問題がある
signetではマイニングの権限を一定のグループに集中する「プルーフ・オブ・オーソリティ(proof of authority)」
signetでブロックの生成者になるには、PoWに加えて、ブロック生成権限を意味するデジタル署名が必要
デフォルトのsignetはTCP38333ポート
regtest
Bitcoin Coreなどにはビットコインネットワークに接続せず、単一ノードで稼働させるモードがあり、それがregtest
複数のregtestモードは単独ノードだけでなく、複数のregtestモードのノードを互いに接続することでプライベートなネットワークを作ることも可能
TCPの18444ポート
ノードの発見
ビットコインワレット
ビットコインワレット
ビットコインユーザが送金や受領などに使用するソフトウェア
主な機能は暗号鍵の生成と管理と送金処理
トランザクションのライフサイクルの視点から見ると、秘密鍵生成→公開鍵生成→公開鍵の公開→UTXOの参照→トランザクションの作成→トランザクションへのデジタル署名→トランザクションのブロードキャスト
取り扱われる仮想通貨の金額や資金の流通頻度によってワレットに必要なセキュリティレベルや管理方法は大きく異なってくる
ビットコインワレットの秘密鍵と公開鍵のフォーマット
公開鍵dGを2つの整数のペアとして表現する形式を公開鍵の非圧縮形式、x座標だけを公開鍵の圧縮形式という
非圧縮形式の公開鍵のフォーマットはx座標とy座標を256ビットの整数として連接したものにプレフィックスとして0x04を付加したもので、サイズは520ビット
圧縮形式はx座標の256ビットの整数にプレフィックスをつけたもので、yの値が奇数であれば0x03,偶数であれば0x02をつける、サイズは272ビット
秘密鍵のバックアップやインポートのために標準化されている秘密鍵のフォーマットはWIF(Wallet Import Format)という
mainnet用WIF形式秘密鍵は秘密鍵の256ビットスカラーに0x80をプレフィックス、4バイトのチェックサムをPostfixとしてつけたもの
testnet用WIF形式秘密鍵は秘密鍵の256ビットのスカラーに0xEFをプレフィックスとして付加し、4バイトのチェックサムをPostfixとしてつけたもの
対になる公開鍵が圧縮形式の時はPostfixとして0x01を追加、これを追加したものを圧縮WIF秘密鍵と呼び、追加していないものを非圧縮WIF秘密鍵と呼ぶ
暗号鍵の生成と管理
PKIでは公開鍵を当事者の識別子として利用していたが、決済履歴を全て世界中に公開することはプライバシー上望ましくない
個人名と公開鍵の関係がわからなければ、ある程度プライバシーが確保できそうだが、それでも同じ公開鍵を複数回使うと同一人物だと分かるだけでなく、履歴による関連情報から本人の推定が可能になる危険性
これを防ぐために、公開鍵を使い捨てるのが良い、初期のビットコインワレットはランダムに生成された秘密鍵と公開鍵のペアを個別に管理するランダムワレット
ランダムワレットでは鍵ペアごとのバックアップが必要になり、管理ミスで資金を失う可能性
決定性ワレット:1つのシードから一定のルールに従って多数の秘密鍵を決定的に生成するワレット、シードさえバックアップしておけばすべての鍵ペアが再現できる
チェーンコード
ルートシード
トランザクション
トランザクション
基本はinputとoutputという2つの領域、どちらも複数個存在できる
ouput部には送金金額及びその資金に対するlock条件
input部には送金者の所持金であるトランザクションのoutputへの参照とその資金を正当にunlockして処分できたという証拠が記載される
inputが参照しているのは他のトランザクションのアウトプット
つまり、連鎖的に接続されたネットワーク構造
コインベース・トランザクション
inputが空でoutputだけがある、何もないところから通貨的価値を生じさせるトランザクション
UTXO
未使用のoutputをUTXO(unspent Transaction Output)
トランザクションという出来事がBCの台帳管理システムで承認されると、それまでUTXOつまり送金者の所有だった資金は使用済状態になり、承認された新しいトランザクションのoutput、つまり送金先の人が所有するUTXOになる
トランザクションのライフサイクル
生成→デジタル署名→ブロードキャスト→検証→記録→承認
生成:自分が所有するUTXOを資金として、outputに送金先を指定してトランザクションを作成する、もちろんlock条件をつける
デジタル署名:送金者は自分が所有するUTXOをunlockする能力の証拠として、自分の秘密鍵を使ってデジタル署名を作成して埋め込む
ブロードキャスト:BCネットワークへのブロードキャスト
検証:リレーの過程で、そのトランザクションのunlock条件が適切なものか検証、そのトランザクションが参照しているUTXOのトランザクションも必要、つまりジェネシスブロック以来全てのデータを保持する必要性
ビットコインスクリプト:
記録:検証をパスしたら各ノードのメモリプールに一時的に保管、マイナーのノードがPoWに成功するとメモリプールのトランザクションをまとめたブロックを完成させてブロードキャストする
承認:ブロックとしてBCに接続されたら承認されたことになる。ただ、一旦接続されたブロックが無効化される再編成というものもある。後続のブロックを承認数といい、それが多いほど不可逆性が高まる
ブロックチェーン
ブロックチェーンの構造
ブロックヘッダとトランザクションリストに分けられる
ブロック高:最初のブロックからのチェーンの長さ
ブロックハッシュ:ブロックヘッダのハッシュ値で、ブロックヘッダの識別子にもなる
マークルルート:ブロックに含まれるトランザクションの集合はマークルツリーによるハッシュチェーンとしてまとめられている、そして最終的なマークルルートがブロックヘッダの項目に埋め込まれている
ブロックチェーンの連結は新しいブロックのブロックヘッダ内に直前のブロックヘッダのハッシュ値を埋め込むことで実現されている
PoWによるマイニング
マイナーによるPoW計算やブロック作成はボランティアではなく、通貨発行益というインセンティブがある
コインベース・トランザクションの作成という形で新しい一定金額のビットコインを発行する権利が与えられる
早い者勝ちで、最初にPoWを発見したものに与えられる
コインベースによる通貨発行の量は210000ブロックごとに半減するようコード化されており、2140年ごろには通貨発行益が得られない
6. ビットコインの仕組みの詳細
ビットコイン開発コミュニティとBIP
ビットコインの開発コミュニティはGithubで管理されているBIPと呼ばれる標準化文書を核としている
トランザクションのタイプ
UTXOのタイプとして、P2PK, P2PKH, P2SH, P2WPKHなどいろいろ
SegWitはビットコインの仕様
ビットコインスクリプト言語
データとオペコードでできている
ビットコインアドレス
人間がビットコインの送金先を指定するためのもの
トランザクションタイプと検証スクリプト
7. P2Pネットワーク
ビットコインのP2Pネットワーク
分散ネットワークを堅牢にするためには、形成するネットワーク・トポロジーやデータの配送方法、ネットワーク全体で使用する帯域幅などが重要な要素になる
また、公開されているネットワーク上でプライバシーをどう担保するかも大事
ビットコインのチェーン同期
イーサリアムのP2Pネットワーク
イーサリアムのピア選択は、Kademliaをベースにしてて少し複雑
イーサリアムのチェーン同期
8. さまざまなノード実装
ブロックチェーンのノードにはジェネシスブロックから最新のブロックまであ単独でそのデータの正しさを検証可能なフルノードに加え、いくつかの特徴的な特性を持つノード形態が存在します
軽量ノード
Compact Stateノード
reGenesis
Secure Fountain Architecture
9. トークンの表現と利用
ブロックチェーンでトークンは、所有、資産、通貨、アクセス権を表すブロックチェーン技術をもとにした抽象物と定義される
UTXOモデル
アカウントモデル
トークンの分類と用途
ステーブルコイン
10. ブロックチェーンのスケーラビリティ
オフチェーン・スケーリング
サイドチェーン・スケーリング
シャーディング
11. 暗号技術とスマートコントラクト
スマートコントラクトの実用性を広げるために暗号技術を利用したスマートコントラクトを解説
オラクル
Scriptless Script
MAST
12. ブロックチェーンと匿名化技術
送金グラフの難読化
送金量の秘匿化
送信者の秘匿
送金内容の秘匿化
経路の秘匿化
匿名化とトレードオフ
13. ブロックチェーンを利用したシステム構成
仮想通貨取引所のモデル
仮想通貨の発行
法定通貨と仮想通貨の交換
仮想通貨同士の交換
不正防止機能つき試験出題・回答システム
14. ブロックチェーン特有のリスク
技術のリスク
ブロックチェーンを狙った特有の攻撃
ビジネスのリスク
関連法規制
15. ブロックチェーンのビジネス
導入プロセスの全体概要
企画フェーズ
実証実験フェーズ
設計・開発フェーズ
運用フェーズ
16. 数学的基礎と用語
(ry